package com.youlai.boot.payment.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.youlai.boot.payment.entity.RechargeOrder;
import com.youlai.boot.system.model.form.RechargeForm;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author 张雨润
 * @date 2025/4/23 18:30
 * @Description 支付宝支付服务接口
 */
public interface AlipayService {

    /**
     * 创建支付宝支付订单并生成支付二维码
     *
     * @param rechargeForm 充值表单
     * @return 包含支付二维码URL的订单信息
     */
    Map<String, Object> createPayOrder(RechargeForm rechargeForm);

    /**
     * 处理支付宝支付结果通知
     *
     * @param params 支付宝回调参数
     * @return 处理结果
     */
    String handlePayNotify(Map<String, String> params);

    /**
     * 查询支付订单状态
     *
     * @param orderNo 订单号
     * @return 订单状态
     */
    String queryPayStatus(String orderNo);

    /**
     * 根据订单号获取充值订单
     *
     * @param orderNo 订单号
     * @return 充值订单
     */
    RechargeOrder getOrderByOrderNo(String orderNo);

    /**
     * 根据登录用户查询充值历史列表
     * 
     * @param userId
     * @return
     */
    IPage<RechargeOrder> getRechargeList(Long userId, String username, Integer pageNum, Integer pageSize);

    /**
     * 人民币转化为积分
     * 
     * @param rechargeForm
     */
    Boolean rechargeExchange(RechargeForm rechargeForm);

    /**
     * 账户余额体现
     * 
     * @param alipayAccount
     * @param amount
     * @return
     */
    Boolean withdraw(String alipayAccount, String alipayRealName,BigDecimal amount);
}